selenium 框架切换iframe报错NoSuchFrameException的解决方法 | 您所在的位置:网站首页 › selenium 切换iframe › selenium 框架切换iframe报错NoSuchFrameException的解决方法 |
最近在使用selenium框架做网页机器人,记录一些挺重要但是网上没有说的很清晰的细节。 使用find_element_by_xpath()的时候遇到报错,有比较大概率是因为页面有iframe 导致找不到这个节点,因此就需要用 _switch_to.frame()方法来切换到具体的iframe中,再寻找目标节点。 比如豆瓣的登陆验证,就有3个iframe在中间,如图这是第一个iframe 与find_element_by_xpath() 方法不同,_switch_to.frame() 的参数并不支持xpath, 如果使用 driver._switch_to.frame('//*[@id="anony-reg-new"]/div/div[1]/iframe') 是会报错NoSuchFrameException的 _switch_to.frame() 要输入一个对象。 因此,我们切换到第二个iframe,可以采用 iframe = driver.find_element_by_xpath('//*[@id="anony-reg-new"]/div/div[1]/iframe') driver._switch_to.frame(iframe) 也可以采用 driver._switch_to.frame(1) 的方式。 但是显然,driver._switch_to.frame(iframe) 的方式更加的准确,也容易在网页的xpath 变化后(豆瓣等验证码经常会周期性修改一些参数),更好的修改锁定对象,可阅读性也更强。 |
CopyRight 2018-2019 实验室设备网 版权所有 |